Skip to main content

生成api, rpc, model命令

生成api服务

goctl api -o user.api
goctl api go -api user.api -dir .

生成rpc服务

goctl rpc -o user.proto
goctl rpc protoc user.proto --go_out=./types --go-grpc_out=./types --zrpc_out=.

生成model命令

执行命令后,会覆盖之前的生成文件.

命令里 加 -c 是代缓存的,不加c是不带缓存的

方式一

goctl model mysql ddl -src user.sql -dir . -c

注意: 执行这条命令, 生成的文件会覆盖你之前的"生成文件", 即使有改动,也会被覆盖. 要特别注意,以免辛苦写的代码木有了.

方式二

goctl model mysql datasource -url="root:password@tcp(127.0.0.1)/数据库名" -table="表名" -c -dir .

goctl model mysql datasource -url="user:password@tcp(127.0.0.1:3306)/database" -table="*" -dir="./model"

注意: 执行这条命令, 生成的文件会覆盖你之前的"生成文件", 即使有改动,也会被覆盖. 要特别注意,以免辛苦写的代码木有了.

goctl model mysql datasource -h
NAME:
goctl.exe model mysql datasource - generate model from datasource

USAGE:
goctl.exe model mysql datasource [command options] [arguments...]

OPTIONS:
--url value the data source of database,like "root:password@tcp(127.0.0.1:3306)/database"
--table value, -t value the table or table globbing patterns in the database
--cache, -c generate code with cache [optional]
--dir value, -d value the target dir
--style value the file naming format, see [https://github.com/zeromicro/go-zero/tree/master/tools/goctl/config/readme.md]
--idea for idea plugin [optional]
--home value the goctl home path of the template, --home and --remote cannot be set at the same time, if they are, --remote has higher priority
--remote value the remote git repo of the template, --home and --remote cannot be set at the same time, if they are, --remote has higher priority
The git repo directory must be consistent with the https://github.com/zeromicro/go-zero-template directory structure
--branch value the branch of the remote repo, it does work with --remote

解决方法 :

  1. 生的时候会生成俩个文件,有一个是以_gen.go 结尾的, 把没有_gen.go的文件删除,
  2. 修改以_gen.go 结尾的文件名, 把_gen 去掉
  3. 把里面 new???Model的方法 改为大写开头的 New???Model
  4. 把里面 type下面的 interface 的接口名字改成大写
  5. 这样再编辑的时候就不会被覆盖了.
  6. _gen.go开头有个一行 // Code generated by goctl. DO NOT EDIT! 也去掉, 这是表示生成的时候不让编辑